package com.woniuxy.yoga.admin.service;

import com.woniuxy.yoga.admin.dao.model.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.yoga.admin.model.dto.menu.MenuDTO;
import com.woniuxy.yoga.admin.model.param.menu.*;
import com.woniuxy.yoga.commons.core.model.PageInfo;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 韦用文,刘存益,郎腾霄
 * @since 2023年12月11日
 */
public interface MenuService extends IService<Menu> {
    /**
     * 新增一级菜单
     * @param param
     * @return
     */
    void addFirstMenu(AddFirstMenuParam param);
    /**
     * 新增二级菜单
     * @param param
     * @return
     */
    void addSeconMenu(AddSeconMenuParam param);
    /**
     * 管理员传入角色ID，分页查询该角色的所有一级权限
     * @param param
     * @return
     */
    PageInfo selectFirstByRoleId(SelectFirstByRoleIdParam param);
    /**
     * 管理员传入角色ID，分页查询该角色的所有二级权限
     * @param param
     * @return
     */
    PageInfo selectSeconByRoleId(SelectSeconByRoleIdParam param);
    /**
     * 管理员传入角色ID，菜单ID，取消关联
     * @param param
     * @return
     */
    void cancelRelation(CancelRelationParam param);
    /**
     * 管理员传入角色ID，菜单ID，恢复关联
     * @param param
     * @return
     */
    void renewRelation(RenewRelationParam param);
    /**
     * 传入账号ID，查询该账号角色所拥有的菜单权限
     * @param accountId
     * @return
     */
    List<MenuDTO> selectMenuByAccountId(Integer accountId);
    /**
     * 查询所有一级菜单
     * @return
     */
    List<Menu> selectFirstMenu();
}
